package com.ian.tag.array;

/**
 * 给定一个数组 nums 和一个值 val，你需要原地移除所有数值等于 val 的元素，返回移除后数组的新长度。
 * <p>
 * 不要使用额外的数组空间，你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/remove-element
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class RemoveElement {


    public int removeElement(int[] nums, int val) {

        if (nums.length == 0)
            return 0;
        int i = 0;
        int j = 0;

        while (j < nums.length) {

            if (nums[j] != val) {
                if (i != j)
                    nums[i] = nums[j];
                i++;
            }
            j++;
        }
        return i;

    }


    public int removeElement2(int[] nums, int val) {

        int ans = nums.length;
        int i = 0;
        while (i < ans) {
            if (nums[i] == val) {
                nums[i] = nums[ans - 1];
                ans--;
            } else
                i++;
        }

        return ans;
    }


}
